<?php

namespace app\common\service;

/**
 * 订单状态管理服务类
 */
class OrderStatus
{
    /**
     * 订单状态 1待付款 2待接单 3已接单 4派送中 5已完成 6已取消
     */
    // -------------------------- 状态常量定义 --------------------------
    const PENDING_PAYMENT     = 1;
    const TO_BE_CONFIRMED        = 2;
    const CONFIRMED     = 3;
    const DELIVERY_IN_PROGRESS   = 4;
    const COMPLETED   = 5;
    const CANCELLED    = 6;

    /**
     * 支付状态 0未支付 1已支付 2退款
     */
    const UN_PAID = 0;
    const PAID = 1;
    const REFUND = 2;

    // -------------------------- 状态映射配置 --------------------------
    /**
     * 状态值 => 状态文本 映射（核心映射）
     * @var array
     */
    protected static $orderStatusMap = [
        self::PENDING_PAYMENT     => '待支付',
        self::TO_BE_CONFIRMED        => '已支付',
        self::CONFIRMED     => '已发货',
        self::DELIVERY_IN_PROGRESS   => '已完成',
        self::COMPLETED   => '已取消',
        self::CANCELLED    => '已退款'
    ];

    /**
     * 状态值 => 状态文本 映射（核心映射）
     * @var array
     */
    protected static $payStatusMap = [
        self::UN_PAID     => '未支付',
        self::PAID        => '已支付',
        self::REFUND     => '退款',
    ];

    // -------------------------- 公共静态方法 --------------------------

    /**
     * 获取订单状态文本（核心方法）
     * @param int $status 状态值
     * @return string
     */
    public static function getOrderText($status)
    {
        return self::$orderStatusMap[$status] ?? '未知状态';
    }

    /**
     * 获取所有订单状态选项（用于下拉框/表单）
     * @return array [状态值 => 状态文本]
     */
    public static function getOrderOptions()
    {
        return self::$orderStatusMap;
    }

    /**
     * 验证订单状态是否有效
     * @param int $status 状态值
     * @return bool
     */
    public static function isOrderValid($status)
    {
        return array_key_exists($status, self::$orderStatusMap);
    }

        /**
     * 获取订单状态文本（核心方法）
     * @param int $status 状态值
     * @return string
     */
    public static function getPayText($status)
    {
        return self::$payStatusMap[$status] ?? '未知状态';
    }

    /**
     * 获取所有订单状态选项（用于下拉框/表单）
     * @return array [状态值 => 状态文本]
     */
    public static function getPayOptions()
    {
        return self::$payStatusMap;
    }

    /**
     * 验证订单状态是否有效
     * @param int $status 状态值
     * @return bool
     */
    public static function isPayValid($status)
    {
        return array_key_exists($status, self::$payStatusMap);
    }
}
